/*
 * Sudoku.h
 *
 *  Created on: Sep 28, 2009
 *      Author: Cha
 */

#ifndef SUDOKU_H_
#define SUDOKU_H_

struct sudokuGrid{
	int board_index;
	int actual_value;
	int *possible_values;
};

class Sudoku{
public:
	Sudoku();
	void initGame(int);
	/*operations on grids*/
	int getNextPossibleValue(sudokuGrid*);
	void restorePossibleValues(sudokuGrid*);
	void setGridValue(sudokuGrid*, int);
	void purgeValue(sudokuGrid*, int);
	void restoreValue(sudokuGrid*, int);
	void checkForAnswer(sudokuGrid*);
	/*operations on the board array*/
	sudokuGrid* getGrid(int);

private:
	sudokuGrid **boardArray;
	/*operations on grids*/
	void initGrid(sudokuGrid*, int);

	/*operations on the board array*/
	void insertGrid(sudokuGrid*, int);

};

#endif /* SUDOKU_H_ */
